package com.gdawj.controleur;

import com.gdawj.javabeans.Cours;
import com.gdawj.javabeans.Etudiant;
import com.gdawj.javabeans.EtudiantCours;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;
import javax.annotation.Resource;
import javax.faces.bean.ManagedBean;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.MessageProducer;
import javax.jms.ObjectMessage;
import javax.jms.Session;
import javax.jms.Topic;


@ManagedBean
public class AbsenceEtudiantBean {

    private ResourceBundle rb=ResourceBundle.getBundle("multilingues.messages",FacesContext.getCurrentInstance().getApplication().getDefaultLocale());
    private FacesMessage message=null;

    // utilisation de JMS
    @Resource(mappedName="jms/webcole/ConnectionFactory")
    private ConnectionFactory connectionFactory;
    @Resource(mappedName="jms/webcole/Topic")
    private Topic topic;

    // valider l'etudiant absent
    public String valider()
    {
        // cours
        Cours c=new Cours();
        c.setLibelle("Java EE - MDB");
        // etudiants concernes
        Etudiant e1=new Etudiant();
        e1.setPrenom("Alain");
        e1.setNom("Martin");
        e1.setEmail("alain.martin@gdawj.com");
        Etudiant e2=new Etudiant();
        e2.setPrenom("Franck");
        e2.setNom("Boisson");
        e2.setEmail("franck.boisson@gdawj.com");
        Etudiant e3=new Etudiant();
        e3.setPrenom("Amélie");
        e3.setNom("Durand");
        e3.setEmail("amelie.durand@gdawj.com");
        EtudiantCours ec1=new EtudiantCours();
        ec1.setEtudiant(e1);
        ec1.setAbsence(true);
        ec1.setCours(c);
        EtudiantCours ec2=new EtudiantCours();
        ec2.setEtudiant(e2);
        ec2.setAbsence(false);
        ec2.setCours(c);
        EtudiantCours ec3=new EtudiantCours();
        ec3.setEtudiant(e3);
        ec3.setAbsence(true);
        ec3.setCours(c);

        List<EtudiantCours> listeEtudiantsCours=new ArrayList<EtudiantCours>();
        listeEtudiantsCours.add(ec1);
        listeEtudiantsCours.add(ec2);
        listeEtudiantsCours.add(ec3);

        try{
        // creer la connexion JMS
        Connection connection=connectionFactory.createConnection();
        // creer la session
        Session session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        // creer le producteur de message
        MessageProducer producer=session.createProducer(topic);
        // creer un message de la liste des etudiants au cours
        ObjectMessage messageJMS=session.createObjectMessage();
        messageJMS.setObject((Serializable)listeEtudiantsCours);
        // envoyer le message
        producer.send(messageJMS);
        // fermer la connexion
        connection.close();
        // ajouter le message JSF
        message=new FacesMessage(FacesMessage.SEVERITY_INFO,rb.getString("succesAbsenceEtudiant"),null);
        FacesContext.getCurrentInstance().addMessage(null, message);
        }
        catch(Exception e){
           System.out.println("Erreur dans le code "+e.getMessage());//ajouter le message JSF
           message=new FacesMessage(FacesMessage.SEVERITY_INFO,rb.getString("erreurAbsenceEtudiant"),null);
           FacesContext.getCurrentInstance().addMessage(null, message);
        }

        return "ajouterAbsenceEtudiant";
    }

    
}

